<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>GMaps.js &mdash; Elevation Routes</title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
  <script type="text/javascript" src="http://www.google.com/jsapi"></script>
  <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
  <script type="text/javascript" src="../gmaps.js"></script>
  <link rel="stylesheet" href="http://twitter.github.com/bootstrap/1.3.0/bootstrap.min.css" />
  <link rel="stylesheet" type="text/css" href="examples.css" />
  <script type="text/javascript">
    var map;
    var mousemarker = null;

    // Load the Visualization API and the piechart package.
    google.load("visualization", "1", {packages: ["columnchart"]});

    $(document).ready(function(){
      map = new GMaps({
        el: '#map',
        lat: -12.043333,
        lng: -77.028333,
        zoom: 12
      });

      //load google visualization chart
      chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));

      var polygone = map.drawRoute({
        origin: [-12.044012922866312, -77.02470665341184],
        destination: [-12.090814532191756, -77.02271108990476],
        travelMode: 'walking',
        strokeColor: '#131540',
        strokeOpacity: 0.6,
        strokeWeight: 6,
        callback : function(polygones){

          //elevation for the path
          map.getElevations({
            locations : polygones.overview_path,
            path: true, 
            callback : function (result, status){
              if (status == google.maps.ElevationStatus.OK) {

                var elevations = result;

                //set the google visualization
                var data = new google.visualization.DataTable();
                data.addColumn('string', 'Sample');
                data.addColumn('number', 'Elevation');
                for (var i = 0; i < result.length; i++) {
                  data.addRow(['', elevations[i].elevation]);
                }

                //add to the dom 
                document.getElementById('chart_div').style.display = 'block';
                chart.draw(data, {
                  width: 340,
                  height: 200,
                  legend: 'none',
                  titleY: 'Elevation (m)',
                  focusBorderColor: '#00ff00'
                });

                //add mouseover
                google.visualization.events.addListener(chart, 'onmouseover', function(e) {
                  if (mousemarker == null) {
                    mousemarker = map.addMarker({
                      lat: elevations[e.row].location.lat(),
                      lng: elevations[e.row].location.lng()
                    });
                  } else {
                    mousemarker.setPosition(elevations[e.row].location);
                  }
                });
              }
            }
          });
        }
      });
    });
  </script>
</head>
<body>
  <h1>GMaps.js &mdash; Elevation Routes</h1>
  <div class="row">
    <div class="span11">
      <div id="map"></div>
    </div>
    <div class="span6">
      <p>With GMaps.js you can calculate the elevation for a route like this:</p>
      <pre>map.getElevations({
  locations : [[-12.040397656836609,-77.03373871559225], [-12.040248585302038,-77.03993927003302], [-12.050047116528843,-77.02448169303511],  [-12.044804866577001,-77.02154422636042]],
  path: true, 
    callback : function (result, status){
    if (status == google.maps.ElevationStatus.OK) {
      console.log(result, status);
    }
  }
});</pre>
      <div id="chart_div"></div>
    </div>
  </div>
</body>
</html>